home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue35 / system / EditMain.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1998-06-09  |  3.8 KB  |  136 lines

  1. unit EditMain;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   Menus, ComCtrls, StdCtrls, ShellAPI, ToolWin, ExtCtrls, RzPanel, Buttons,
  8.   RichEdit, RzStatus, RichEdit2;
  9.  
  10. type
  11.   TForm1 = class(TForm)
  12.     MainMenu1: TMainMenu;
  13.     File1: TMenuItem;
  14.     Edit1: TMenuItem;
  15.     Format1: TMenuItem;
  16.     Help1: TMenuItem;
  17.     New1: TMenuItem;
  18.     Open1: TMenuItem;
  19.     Close1: TMenuItem;
  20.     N1: TMenuItem;
  21.     Save1: TMenuItem;
  22.     SaveAs1: TMenuItem;
  23.     N2: TMenuItem;
  24.     SaveSetttings1: TMenuItem;
  25.     Exit1: TMenuItem;
  26.     RzToolbar1: TRzToolbar;
  27.     FileNew: TSpeedButton;
  28.     FileOpen: TSpeedButton;
  29.     FileSave: TSpeedButton;
  30.     FilePrint: TSpeedButton;
  31.     RzSpacer1: TRzSpacer;
  32.     SpeedButton5: TSpeedButton;
  33.     SpeedButton6: TSpeedButton;
  34.     SpeedButton7: TSpeedButton;
  35.     RzSpacer2: TRzSpacer;
  36.     UndoButton: TSpeedButton;
  37.     RzStatusBar1: TRzStatusBar;
  38.     RzClockStatus1: TRzClockStatus;
  39.     Font1: TMenuItem;
  40.     N3: TMenuItem;
  41.     Bold1: TMenuItem;
  42.     Italic1: TMenuItem;
  43.     Underline1: TMenuItem;
  44.     Strikeout1: TMenuItem;
  45.     RichEdit1: TRichEdit2;
  46.     RzStatusPane1: TRzStatusPane;
  47.     Timer1: TTimer;
  48.     RedoButton: TSpeedButton;
  49.     RzSpacer3: TRzSpacer;
  50.     EditCut: TSpeedButton;
  51.     EditCopy: TSpeedButton;
  52.     EditPaste: TSpeedButton;
  53.     EditDelete: TSpeedButton;
  54.     RzSpacer4: TRzSpacer;
  55.     EditBold: TSpeedButton;
  56.     EditItalic: TSpeedButton;
  57.     EditUnderline: TSpeedButton;
  58.     RzSpacer5: TRzSpacer;
  59.     SpeedButton16: TSpeedButton;
  60.     procedure FormCreate(Sender: TObject);
  61.     procedure EditButtonClick (Sender: TObject);
  62.     procedure EditSelectionClick(Sender: TObject);
  63.     procedure RichEdit1URLClicked(Sender: TObject; const TheURL: String;
  64.       Button: TMouseButton);
  65.     procedure Timer1Timer(Sender: TObject);
  66.     procedure RichEdit1SelectionChange(Sender: TObject);
  67.   private
  68.     { Private declarations }
  69.     procedure EnableDisableToolBar;
  70.   protected
  71.     { Protected declarations }
  72.   public
  73.     { Public declarations }
  74.   end;
  75.  
  76. var
  77.   Form1: TForm1;
  78.  
  79. implementation
  80.  
  81. {$R *.DFM}
  82.  
  83. procedure TForm1.EnableDisableToolBar;
  84. begin
  85.     UndoButton.Enabled := RichEdit1.CanUndo;
  86.     RedoButton.Enabled := RichEdit1.CanRedo;
  87.     EditPaste.Enabled := IsClipboardFormatAvailable (cf_Text);
  88.     EditDelete.Enabled := RichEdit1.GotSelection;
  89.     EditCopy.Enabled := EditDelete.Enabled;
  90.     EditCut.Enabled := EditCopy.Enabled;
  91. end;
  92.  
  93. procedure TForm1.FormCreate(Sender: TObject);
  94. begin
  95.     DragAcceptFiles (RichEdit1.Handle, True);
  96.     EnableDisableToolBar;
  97. end;
  98.  
  99. procedure TForm1.EditButtonClick (Sender: TObject);
  100. begin
  101.     with Sender as TSpeedButton do RichEdit1.Perform (Tag, 0, 0);
  102.     EnableDisableToolBar;
  103. end;
  104.  
  105. procedure TForm1.EditSelectionClick(Sender: TObject);
  106. var
  107.     Style: Integer;
  108.     cfm: TCharFormat;
  109. begin
  110.     if Sender is TSpeedButton then Style := TSpeedButton(Sender).Tag else
  111.     if Sender is TMenuItem then Style := TMenuItem(Sender).Tag else Exit;
  112.     cfm.cbSize := sizeof (cfm);
  113.     RichEdit1.Perform (em_GetCharFormat, Integer (True), Integer (@cfm));
  114.     cfm.dwEffects := cfm.dwEffects xor Style;
  115.     RichEdit1.Perform (em_SetCharFormat, scf_Selection, Integer (@cfm));
  116.     EnableDisableToolBar;
  117. end;
  118.  
  119. procedure TForm1.RichEdit1URLClicked(Sender: TObject; const TheURL: String; Button: TMouseButton);
  120. begin
  121.     if Button = mbLeft then ShellExecute (Handle, 'open', PChar (TheURL), Nil, Nil, sw_Show);
  122.     if Button = mbRight then ShowMessage (TheURL);
  123. end;
  124.  
  125. procedure TForm1.Timer1Timer(Sender: TObject);
  126. begin
  127.     RzStatusPane1.Caption := Format ('Row: %d, Col: %d', [RichEdit1.Row, RichEdit1.Column]);
  128. end;
  129.  
  130. procedure TForm1.RichEdit1SelectionChange(Sender: TObject);
  131. begin
  132.     EnableDisableToolBar;
  133. end;
  134.  
  135. end.
  136.